﻿Imports System.Data
Imports System.Data.SqlClient

Public Class FuncionesDatos

    Public Shared Function getEstadoConexion() As Boolean

        Dim conexion As SqlConnection
        conexion = New SqlConnection
        conexion.ConnectionString = Configuracion.getCadenaConexion

        Try
            conexion.Open()
            Return True

        Catch ex As Exception
            Return False
        End Try

    End Function

    Public Shared Function crearStore(ByVal t As Integer) As SqlCommand

        Dim comandoSQL As New SqlCommand
        Dim conexionSQL As SqlConnection
        Dim numeroTransaccion As SqlParameter

        conexionSQL = New SqlConnection
        conexionSQL.ConnectionString = Configuracion.getCadenaConexion 'pido la cadena de conexion al server
        comandoSQL.CommandType = CommandType.StoredProcedure
        comandoSQL.Connection = conexionSQL

        'Declaramos el parametro para el numero de la transaccion
        numeroTransaccion = New SqlClient.SqlParameter("@idTrans", SqlDbType.Int)
        numeroTransaccion.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(numeroTransaccion)
        comandoSQL.Parameters("@idTrans").Value = t

        Return comandoSQL

    End Function

    Public Shared Function crearStoreEwave(ByVal t As Integer) As SqlCommand

        Dim comandoSQL As New SqlCommand
        Dim conexionSQL As SqlConnection
        Dim numeroTransaccion As SqlParameter

        conexionSQL = New SqlConnection
        conexionSQL.ConnectionString = Configuracion.getCadenaConexion 'pido la cadena de conexion al server
        comandoSQL.CommandType = CommandType.StoredProcedure
        comandoSQL.Connection = conexionSQL

        'Declaramos el parametro para el numero de la transaccion
        numeroTransaccion = New SqlClient.SqlParameter("@id_trans", SqlDbType.Int)
        numeroTransaccion.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(numeroTransaccion)
        comandoSQL.Parameters("@id_trans").Value = t

        Return comandoSQL

    End Function

    Public Shared Function crearStoreValidarTerminal(ByVal t As String) As SqlCommand

        Dim comandoSQL As New SqlCommand
        Dim conexionSQL As SqlConnection
        Dim numeroTransaccion As SqlParameter

        conexionSQL = New SqlConnection
        conexionSQL.ConnectionString = Configuracion.getCadenaConexion 'pido la cadena de conexion al server
        comandoSQL.CommandType = CommandType.StoredProcedure
        comandoSQL.Connection = conexionSQL

        'Declaramos el parametro para el numero de la transaccion
        numeroTransaccion = New SqlClient.SqlParameter("@terminal", SqlDbType.NVarChar)
        numeroTransaccion.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(numeroTransaccion)
        comandoSQL.Parameters("@terminal").Value = t

        Return comandoSQL

    End Function
    Public Shared Function crearStoreValidacierreScharge(ByVal f As Date, ByVal pv As Integer) As SqlCommand

        Dim comandoSQL As New SqlCommand
        Dim conexionSQL As SqlConnection
        Dim fecha As SqlParameter
        Dim puntoventa As SqlParameter
        Dim mensaje As SqlParameter


        conexionSQL = New SqlConnection
        conexionSQL.ConnectionString = Configuracion.getCadenaConexion 'pido la cadena de conexion al server
        comandoSQL.CommandType = CommandType.StoredProcedure
        comandoSQL.Connection = conexionSQL

        'Declaramos el parametro para el numero de la transaccion

        fecha = New SqlClient.SqlParameter("@fecha", SqlDbType.Date)
        fecha.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(fecha)
        comandoSQL.Parameters("@fecha").Value = f

        puntoventa = New SqlClient.SqlParameter("@PuntoVenta", SqlDbType.Int)
        puntoventa.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(puntoventa)
        comandoSQL.Parameters("@fecha").Value = pv


        mensaje = New SqlClient.SqlParameter("@mensaje", SqlDbType.VarChar)
        mensaje.Direction = ParameterDirection.Output
        comandoSQL.Parameters.Add(mensaje)
        'comandoSQL.Parameters("@mensaje").Value = mensaje



        Return comandoSQL

    End Function

    Public Shared Function ejecutarStoreValidacierreScharge(ByVal comando As SqlCommand) As String

        Dim datosSQL As SqlDataReader
        Dim mensaje As String = "ERROR"

        Try

            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            While datosSQL.Read

                mensaje = datosSQL.GetSqlString(0)

            End While

            comando.Connection.Close()
            'Retorno el número del nivel

            mensaje = comando.Parameters("@mensaje").Value.ToString()

            Return mensaje

        Catch ex As Exception
            comando.Connection.Close()


            'retorno un 0 si se produce un error
            Return mensaje
        End Try

    End Function

    Public Shared Function crearStorevalidarNivelUsuario(ByVal usuario As String) As SqlCommand

        Dim comandoSQL As New SqlCommand
        Dim conexionSQL As SqlConnection
        Dim numeroTransaccion As SqlParameter

        conexionSQL = New SqlConnection
        conexionSQL.ConnectionString = Configuracion.getCadenaConexion 'pido la cadena de conexion al server
        comandoSQL.CommandType = CommandType.StoredProcedure
        comandoSQL.Connection = conexionSQL

        'Declaramos el parametro para el numero de la transaccion
        numeroTransaccion = New SqlClient.SqlParameter("@usuario", SqlDbType.NVarChar)
        numeroTransaccion.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(numeroTransaccion)
        comandoSQL.Parameters("@usuario").Value = usuario

        Return comandoSQL

    End Function


    Public Shared Function ejecutarStoreValidarNivelUsuario(ByVal comando As SqlCommand) As Integer

        Dim datosSQL As SqlDataReader
        Dim nivel As Integer

        Try

            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            While datosSQL.Read

                nivel = datosSQL.GetSqlInt32(0)

            End While

            comando.Connection.Close()
            'Retorno el número del nivel
            Return nivel

        Catch ex As Exception
            comando.Connection.Close()
            'retorno un 0 si se produce un error
            Return 0
        End Try

    End Function

    Public Shared Function ejecutarStoreValidarLogin(ByVal comando As SqlCommand) As String

        Dim datosSQL As SqlDataReader
        Dim usuario As String = ""

        Try

            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            While datosSQL.Read

                usuario = datosSQL.GetSqlString(0)

            End While

            comando.Connection.Close()
            'Retorno el número de transacción
            Return usuario

        Catch ex As Exception
            comando.Connection.Close()
            'retorno un 1 si se produce un error
            Return "Error"
        End Try

    End Function

    Public Shared Function ejecutarStore(ByVal comando As SqlCommand) As Integer

        Dim datosSQL As SqlDataReader
        Dim t As Integer = 0

        Try

            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            While datosSQL.Read

                t = datosSQL.GetSqlInt32(0)

            End While

            comando.Connection.Close()
            'Retorno el número de transacción
            Return t

        Catch ex As Exception
            comando.Connection.Close()
            'retorno un 1 si se produce un error
            Return 1
        End Try
        
    End Function

    Public Shared Function ejecutarStoreEwave(ByVal comando As SqlCommand) As Boolean

        Dim datosSQL As SqlDataReader
        Dim detalleTransaccion As DetalleTransaccion

        Try
            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            While datosSQL.Read()

                detalleTransaccion = New DetalleTransaccion()

                detalleTransaccion.idTransaccion = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("IdTransaccion"))
                detalleTransaccion.fechaTransaccion = datosSQL.GetSqlDateTime(datosSQL.GetOrdinal("FechaTransaccion"))
                detalleTransaccion.montoTotal = datosSQL.GetSqlDecimal(datosSQL.GetOrdinal("Total"))
                detalleTransaccion.cantidadEntradas = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("QEntradas"))
                detalleTransaccion.nombreEvento = datosSQL.GetSqlString(datosSQL.GetOrdinal("Espectaculo"))
                detalleTransaccion.fechaEvento = datosSQL.GetSqlDateTime(datosSQL.GetOrdinal("FechaFuncion"))

                Globales.arrayItemTransaccion.Add(detalleTransaccion)

            End While

            comando.Connection.Close()
            'Retorno true si todo se ejecuto correctamente
            Return True

        Catch ex As Exception
            comando.Connection.Close()
            'retorno un false si se produce un error
            Return False
        End Try

    End Function

    Public Shared Function validarsumacaja(ByVal comando As SqlCommand) As Boolean

        Dim datosSQL As SqlDataReader
        Dim detalleTransaccion As DetalleTransaccion

        Try
            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            While datosSQL.Read()

                detalleTransaccion = New DetalleTransaccion()

                detalleTransaccion.idTransaccion = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("IdTransaccion"))
                detalleTransaccion.fechaTransaccion = datosSQL.GetSqlDateTime(datosSQL.GetOrdinal("FechaTransaccion"))
                detalleTransaccion.montoTotal = datosSQL.GetSqlDecimal(datosSQL.GetOrdinal("Total"))
                detalleTransaccion.cantidadEntradas = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("QEntradas"))
                detalleTransaccion.nombreEvento = datosSQL.GetSqlString(datosSQL.GetOrdinal("Espectaculo"))
                detalleTransaccion.fechaEvento = datosSQL.GetSqlDateTime(datosSQL.GetOrdinal("FechaFuncion"))

                Globales.arrayItemTransaccion.Add(detalleTransaccion)

            End While

            comando.Connection.Close()

            'Retorno true si todo se ejecuto correctamente
            Return True

        Catch ex As Exception
            comando.Connection.Close()
            'retorno un false si se produce un error
            Return False
        End Try
    End Function

    Public Shared Function crearStoreBuscarTicketNC(ByVal pvOriginal As Integer, ByVal ticketOriginal As String) As SqlCommand

        Dim comandoSQL As New SqlCommand
        Dim conexionSQL As SqlConnection
        'Parametros strore
        Dim ticket As SqlParameter
        Dim pv As SqlParameter

        conexionSQL = New SqlConnection
        conexionSQL.ConnectionString = Configuracion.getCadenaConexion 'pido la cadena de conexion al server
        comandoSQL.CommandType = CommandType.StoredProcedure
        comandoSQL.Connection = conexionSQL

        'Declaramos el parametro para el numero de pv
        pv = New SqlClient.SqlParameter("@puntoventa", SqlDbType.Int)
        pv.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(pv)
        comandoSQL.Parameters("@puntoventa").Value = pvOriginal

        'Declaramos el parametro para el numero de ticket
        ticket = New SqlClient.SqlParameter("@nroticket", SqlDbType.VarChar, 15)
        ticket.Direction = ParameterDirection.Input
        comandoSQL.Parameters.Add(ticket)
        comandoSQL.Parameters("@nroticket").Value = ticketOriginal

        Return comandoSQL

    End Function

    Public Shared Function ejecutarStoreBuscarTicketNC(ByVal comando As SqlCommand) As Boolean

        Dim datosSQL As SqlDataReader
        Dim detalleNC As TransaccionNotaCredito

        Try
            comando.Connection.Open()
            datosSQL = comando.ExecuteReader()

            MsgBox("ejecuto store")

            While datosSQL.Read()

                detalleNC = New TransaccionNotaCredito()

                detalleNC.idTransaccion = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("idtransaccion"))
                detalleNC.ticketOriginal = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("nroticketFiscal"))
                detalleNC.puntoventaOriginal = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("puntoventa"))
                detalleNC.fechaFacturacion = datosSQL.GetSqlString(datosSQL.GetOrdinal("fechafacturacion"))
                detalleNC.importeEntradas = datosSQL.GetSqlMoney(datosSQL.GetOrdinal("importeneto"))
                detalleNC.importeSC = datosSQL.GetSqlMoney(datosSQL.GetOrdinal("importefacturado"))
                detalleNC.cantidadEntradas = datosSQL.GetSqlInt32(datosSQL.GetOrdinal("cantentradas"))
                detalleNC.nombreEvento = datosSQL.GetSqlString(datosSQL.GetOrdinal("nombreespectaculo"))
                detalleNC.fechaEvento = datosSQL.GetSqlDateTime(datosSQL.GetOrdinal("fechafuncion"))

                MsgBox("id transaccion: " & detalleNC.idTransaccion)

                Globales.arrayItemNC.Add(detalleNC)

            End While

            comando.Connection.Close()
            'Retorno true si todo se ejecuto correctamente
            Return True

        Catch ex As Exception
            comando.Connection.Close()
            'retorno un false si se produce un error
            Return False
        End Try

    End Function

End Class
